package com.xbongbong.paas.model;

import com.xbongbong.paas.domain.entity.PaasAppEntity;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.IModel;

import java.util.List;
import java.util.Map;

/**
 * PAAS 应用服务层
 *
 * @author kaka
 * @time 2018-7-30 13:47
 */
public interface PaasAppModel extends IModel<PaasAppEntity> {

    /**
     * 插入实体
     *
     * @param entity 实体
     *
     * @return Integer MyBatis操作结果 1：成功
     */
    @Override
    Integer insert(PaasAppEntity entity);

    /**
     * 批量插入实体
     * @param list
     * @return 返回数据的列表
     */
    List<PaasAppEntity> insertBatch(List<PaasAppEntity> list);

    /**
     *  查询应用列表
     * @author wufeng
     * @date 2018/8/6 16:07
     * @param param
     * @descption
     * @return java.util.List<ApplicationListVO>
     */
    List<PaasAppEntity> list(Map<String, Object> param);

    /**
     * 查询列表，返回值可以自己限定
     * @param param
     * @return
     */
    @Override
    List<PaasAppEntity> findEntitys(Map<String, Object> param);

    /**
     * 查询实体
     * @param key
     * @param corpid
     * @return
     */
    PaasAppEntity getByKey(Long key, String corpid);

    /**
     * 通过业务标识获取实体
     * @param alias 业务标识
     * @see com.xbongbong.saas.enums.XbbRefTypeEnum
     * @param corpid 公司id
     * @return 实体
     */
    PaasAppEntity getByAlias(String alias, String corpid);
    
    /**
     * 获取钉钉群的应用
     * @param idGet
     * @return
     */
    List<PaasAppEntity> getDingBundleByAlias(Long idGet, String corpid);

    /**
     *  查询应用列表数量
     * @author wufeng
     * @date 2018/8/6 16:07
     * @param param
     * @descption
     * @return Integer
     */
    @Override
    Integer getEntitysCount(Map<String, Object> param);

    /**
     * 获取开通并开启应用的公司id
     * @param param
     * @return
     */
    List<String> findCorps(Map<String, Object> param);
    /**
     * 删除实体
     * @author wufeng
     * @date 2018/8/6 17:18
     * @param key id
     * @param corpid 公司id
     * @descption
     * @return java.lang.Integer  mybatis操作结果，1：成功
     */
    Integer delete(Long key, String corpid);

    /**
     *  更新名字和样式、颜色
     * @author wufeng
     * @date 2018/8/6 17:19
     * @param entity
     * @descption
     * @return java.lang.Integer
     */
    @Override
    Integer update(PaasAppEntity entity);

    /**
     * 排序
     * @author wufeng
     * @date 2018/8/7 14:10
     * @param  entity
     * @param corpid
     * @descption
     * @return
     */
    Integer updateSort(List<PaasAppEntity> entity, String corpid);

    /**
     * 搜索用户应用列表
     * @param map
     * @return
     */
    List<PaasAppEntity> userAppList(Map<String,Object> map);

    List<String> getCorpidList();

    void updateBatch(List<PaasAppEntity> paasAppEntities ,String corpid);

    Boolean validateAppEnable(Long appId, String alias, Integer saasMark, String corpid) throws XbbException;

    List<String> getJxcEnableTime(Map<String,Object> map);

    /**
     * 查询应用名称数组
     *
     * @param appIds 应用id数组
     * @param corpid 公司id
     * @return 应用实体，目前只有id、name两个字段
     * @author zyy
     * @date 2022/4/1
     * @version v1.0
     */
    List<PaasAppEntity> getNameByKeys(List<Long> appIds, String corpid);


    void validateCallCenter(String corpid, String alias) throws XbbException;
}
